package cn.xmstore.globals;

/**
 * @author： Aeolia
 * @Description： TODO 全局统一响应码，用于所有请求的数据响应规范
 * @Date： 2021/8/21 14:25
 *
 * 状态码设计规范：
 * 名称定义格式：
 * 项目名_状态码所属_状态信息(状态码,状态码解释消息)
 * 例如：XMS_PARAMETER_NOT_MATCH
 * 1.第一位XMS为本项目xmstore的前三字符简称
 * 2.第二位PARAMETER为状态码所属，如参数类问题PARAMETER,用户相关问题USER
 * 3.第三位NOT_MATCH为状态信息，第三位以后的字符均为状态信息
 * 4.状态码成功均为0，其余状态码均为100XSSS方式命名，X代表状态码所属系列，SSS代表编号，SSS为000时为该系列通用状态码
 *
 */
public enum CODE {
    //成功
    XMS_REQUEST_SUCCESS(0,"操作成功"),
    //异常
    XMS_EXCEPTION_ERROR(1001000,"服务器内部异常"),
    //参数
    XMS_PARAMETER_ERROR(1002000,"请求参数错误"),
    XMS_PARAMETER_LACK(1002001,"缺少请求参数"),
    XMS_PARAMETER_TYPE_NOT_MATCH(1002002,"参数类型不符"),
    //响应
    XMS_RESPONSE_ERROR(1003000,"服务器响应错误"),
    XMS_RESPONSE_TIMEOUT(1003001,"服务器响应超时"),
    //用户
    XMS_USER_ERROR(1004000,"用户相关操作出错"),
    XMS_USER_NOT_EXIST(1004001,"该用户不存在"),
    XMS_USER_PASSWORD_ERROR(1004002,"用户账号或密码错误"),
    XMS_USER_RESULT_NOT_MATCH(1004003,"查询到的用户相关结果数据不符"),
    XMS_USER_RESULT_ISNULL(1004004,"查询到的用户相关结果数据为空"),
    XMS_USER_UPDATE_FAIL(1004005,"用户数据修改失败"),
    XMS_USER_DELETE_FAIL(1004006,"用户数据删除失败"),
    XMS_USER_TOKEN_NOT_EXIST(1004007,"用户Token不存在"),
    XMS_USER_TOKEN_UPDATE_SUCCESS(1004008,"用户Token超时并刷新成功"),
    XMS_USER_TOKEN_UPDATE_FAIL(1004009,"用户Token超时但刷新失败"),
    XMS_USER_TOKEN_TIMEOUT(1004010,"用户Token已过期请重新登录"),
    XMS_USER_TOKEN_CREATE_FAIL(1004011,"登录失败，无法生成Token"),
    XMS_USER_ACCOUNT_ISNULL(1004012,"账号为空"),
    XMS_USER_PASSWORD_ISNULL(1004013,"用户密码为空"),
    XMS_USER_ACCOUNT_EXIST(1004014,"该用户已存在"),
    //验证码
    XMS_CODE_TIMEOUT(1005014,"验证码未生成或已过期"),
    XMS_CODE_NOT_THE_SAME(1005015,"验证失败");


    private Integer code;//响应码
    private String message;//响应信息


    CODE(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
